/**
*  在dao层操作数据库的时候遇到一个`sql.ErrNoRows`，我们应该抛出去。dao层的作用主要是执行逻辑，具体的判断应该交给调用方来处理，调用者知道这一次数据库的请求操作出现了错误，
*  可以做出一些相应的判断，如果在dao层直接处理掉的话，调用方有可能不知道发生了什么。
 */
package main

import (
	"database/sql"
	"fmt"
	"github.com/pkg/errors"
)

type Dao struct{}

func New() *Dao {
	return &Dao{}
}

func (d *Dao) FindByID(id int) (user *model.User, err error) {

	//因为没有使用过sql数据库 具体的操作sql go代码不太清楚  此处请求了一个数据库
	//此处 返回了一个错误err
	err = Db.Table("t_user").Where("id = ?", "-").Find(user).Error
	if errors.Is(err, sql.ErrNoRows) {
		err = ErrRecordNotFound
	}
	// ...... 这里可以补充其他错误处理
	if err != nil {
		//上抛
		err = errors.Wrap(err, fmt.Sprintf("find by user_id: %v error", "用户id"))
	}
	return
}
